package 数据结构.章节09._161_队列;

import 数据结构.章节09._148_双链表.DoubleLinkedList;
import 数据结构.章节09._148_双链表.ListNode;

/**
 * @author 挚爱之夕
 * @date 2021/10/13 - 10 - 13 - 15:31
 * @Description: 数据结构.章节09._161_队列
 * @Version: 1.0
 */
public class MyQueue<T> extends DoubleLinkedList<T> implements QueueInterface<T> {
    @Override
    public void enqueue(T e) {
        super.add(e);
    }

    @Override
    public T dequeue() {
        //队首元素
        ListNode<T> h = first.getNext();
        //删除操作
        first.setNext(h.getNext());
        h.getNext().setPre(first);
        h.setPre(null);
        h.setNext(null);
        size--;
        //返回队首元素
        return h.getData();
    }

    @Override
    public T peek() {
        return first.getNext().getData();
    }

    @Override
    public boolean isEmpty() {
        return getSize()==0;
    }

    @Override
    public int getSize() {
        return size;
    }
}
